package model

import (
	"time"

	"gorm.io/gorm"
)

// token模型  用于做token注销功能
type Token struct {
	gorm.Model
	Token  string
	Status string
}

func GetToken(token string) (Token, error) {
	var token_db Token
	result := DB.Where("Token = ?", token).First(&token_db)
	return token_db, result.Error
}

func (t *Token) CreateToken() error {
	// 创建token
	err := DB.Create(t).Error
	return err

}

func (t *Token) DeleteToken() error {
	// 删除token
	err := DB.Unscoped().Delete(t).Error
	return err
}

func (t *Token) UpdateToken() error {
	// 更新token
	err := DB.Model(t).Where("ID=?", t.ID).Updates(t).Error
	return err

}

func ClearToken() error {
	// 删除创建时间超过1天的token  这种属于申请之后没有主动logout的  需要清理db
	t := time.Now().Add(-time.Hour * 24)
	err := DB.Unscoped().Where("Created_at < ?", t).Delete(&Token{}).Error
	return err
}
